package org.alwayssuper.protocol.commons.transform;

import org.alwayssuper.protostar.PrepareLoadStrategy;
import org.alwayssuper.protostar.schema.MultiMapSchema;
import org.alwayssuper.protostar.schema.NumberSchema;
import org.alwayssuper.protocol.commons.transform.realtimev2025.*;

/**
 * 2025版实时消息上报转化器
 * 基于GB/T 32960.3-2025标准和AICoding报文规则文档
 * 适用于key后面直接跟value对象的GBT32960协议格式
 * @author alwaysSuper
 */
public class RealTimeConverterV2025 extends MultiMapSchema<Number, Object> {
    public RealTimeConverterV2025() {
        super(NumberSchema.BYTE_INT);
    }

    @Override
    protected void addSchemas(PrepareLoadStrategy<Number> schemaRegistry) {
        schemaRegistry
                // 基础数据类型 (按标准表9顺序)
                .addSchema(RealTimeTypeV2025.整车数据, Vehicle.class)                                // 0x01
                .addSchema(RealTimeTypeV2025.驱动电机数据, DriveMotorData.class)                      // 0x02
                .addSchema(RealTimeTypeV2025.燃料电池发动机及车载氢系统数据, FuelCellEngineData.class)    // 0x03
                .addSchema(RealTimeTypeV2025.发动机数据, EngineData.class)                          // 0x04
                .addSchema(RealTimeTypeV2025.车辆位置数据, VehicleLocationData.class)                // 0x05
                .addSchema(RealTimeTypeV2025.报警数据, AlarmData.class)                            // 0x06
                // 新增数据类型 (2025版)
                .addSchema(RealTimeTypeV2025.动力蓄电池最小并联单元电压数据, BatteryPackVoltageData.class)  // 0x07
                .addSchema(RealTimeTypeV2025.动力蓄电池温度数据, BatteryTemperatureData.class)        // 0x08
                .addSchema(RealTimeTypeV2025.燃料电池电堆数据, FuelCellStackData.class)               // 0x30
                .addSchema(RealTimeTypeV2025.超级电容器数据, SupercapacitorData.class)               // 0x31
                .addSchema(RealTimeTypeV2025.超级电容器极值数据, SupercapacitorExtremeData.class)      // 0x32
                // 签名数据 (2025版新增)
                .addSchema(RealTimeTypeV2025.签名数据开始标识, SignatureData.class);                 // 0xFF
    }
}
